﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Interfejsi;
using MySql.Data.MySqlClient;
using OOAD_PROJEKAT;

namespace DAL
{
    partial class DAL
    {
        public class PreuzimacDAO : IDaoCrud<Preuzimac>
        {
            protected MySqlCommand c;
            private DAL.OZaposlenikDAO vratiOZaposlenikDAO()
            {
                try
                {
                    DAL d = DAL.Instanca;
                    return d.getDAO.getOZaposlenikDAO();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            private OZaposlenik ToOZaposlenik(Preuzimac p)
            {
                return new OZaposlenik(p.Id, p.Username, p.Ime, p.Prezime, p.Jmbg, p.Password, p.Plata, p.IdFilijale, p.Funkcija);
            }
            private Preuzimac ToPreuzimac(OZaposlenik p)
            {
                return new Preuzimac(p.Id, p.Username, p.Ime, p.Prezime, p.Jmbg, p.Password, p.Plata, p.IdFilijale);
            }
            private List<Preuzimac> ToPreuzimaci(List<OZaposlenik> zaposlenici)
            {
                List<Preuzimac> radnici = new List<Preuzimac>();
                foreach (OZaposlenik z in zaposlenici)
                {
                    radnici.Add(ToPreuzimac(z));
                }
                return radnici;
            }

            public long create(Preuzimac p)
            {
                try
                {
                    return vratiOZaposlenikDAO().create(ToOZaposlenik(p));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Preuzimac> getAll()
            {
                try
                {
                    return ToPreuzimaci(vratiOZaposlenikDAO().getByExample("funkcija", "Preuzimac"));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Preuzimac read(Preuzimac p)
            {
                try
                {
                    OZaposlenik z = new OZaposlenik(vratiOZaposlenikDAO().read(ToOZaposlenik(p)));
                    return ToPreuzimac(z);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Preuzimac update(Preuzimac p)
            {
                try
                {
                    vratiOZaposlenikDAO().update(ToOZaposlenik(p));
                    return read(p);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public void delete(Preuzimac p)
            {
                try
                {
                    vratiOZaposlenikDAO().delete(ToOZaposlenik(p));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Preuzimac getById(int id)
            {
                try
                {
                    return ToPreuzimac(vratiOZaposlenikDAO().read(new OZaposlenik(id, "", "", "", "", "", 0, 0, "")));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Preuzimac> getByExample(string name, string value)
            {
                try
                {
                    return ToPreuzimaci(vratiOZaposlenikDAO().getByExampleSpec("Preuzimac", name, value));
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

        }
    }
}